#!/bin/bash
#jar包名称
packageName=$2 #命令启动包名 xx.jar的xx
pid=           #进程pid

#检测pid
getPid() {
  pid=$(ps -ef | grep -n "$packageName" | grep -v grep | grep -v build | awk '{print $2}')
}
#启动程序
start() {
  if [[ ! -e $packageName ]]; then
    log '文件不存在'
  else
    #启动前，先停止之前的
    log '开始启动'
    stop
    if [[ $pid ]]; then
      log "停止程序失败，无法启动"
    else
      nohup java -jar $packageName >/dev/null 2>&1 &
      #查询是否有启动进程
      getPid
      if [[ ${pid} ]]; then
        log "启动成功:"$pid
      else
        log "启动失败"
      fi
    fi
  fi
}

#停止程序
stop() {
  getPid
  if [[ $pid ]]; then
    kill -9 $pid
    getPid
    if [[ ${pid} ]]; then
      log "停止失败"
    else
      log "停止成功"
    fi
  fi
}

log() {
  time=$(date +%Y-%m-%d\ %H:%M:%S)
  echo $1
  echo $time' : '$packageName' '$1 >>./build.log
}

#启动时带参数，根据参数执行
if [[ ${#} -ge 2 ]]; then
  case ${1} in
  "start")
    start
    ;;
  "restart")
    start
    ;;
  "stop")
    stop
    ;;
  *)
    log "${1}无任何操作"
    ;;
  esac
else
  echo "
    command如下命令：
    start：启动
    stop：停止进程
    restart：重启
    示例命令如：./build start aaa.jar
    "
fi
